﻿
  <circle cx="@X" cy="@Y" 
            r="@StrokeWidth"
            fill="rgba(@StrokeColor.R,@StrokeColor.G,@StrokeColor.B,@StrokeColor.A)"
            stroke="rgba(@StrokeColor.R,@StrokeColor.G,@StrokeColor.B,@StrokeColor.A)"
            stroke-dasharray="@StrokeDashArray" stroke-linejoin="@Join.ToString().ToLower()"
            stroke-linecap="@Cap.ToString().ToLower()"
            stroke-width="@StrokeWidth"
            @onclick="OnClick"
            @ondblclick="OnDoubleClick"
            @onmousemove="OnMouseMove"
            @onmousewheel="OnMouseWheel"
            @ondrag="OnDrag"
            @onmousedown="OnMousePressed"
            @onmouseup="OnMouseReleased"
            @onmouseout="OnMouseOut"
            @onmouseover="OnMouseOver"
            style="opacity:@Opacity">
    </circle>

@code
{
    [Parameter]
    public int X { get; set; }
    [Parameter]
    public int Y { get; set; }
    [Parameter]
    public double Opacity { get; set; } = 1;
    [Parameter]
    public Color StrokeColor { get; set; }
    [Parameter]
    public double StrokeWidth { get; set; } = 2;
    [Parameter]
    public StrokeLineCap Cap { get; set; }
    [Parameter]
    public StrokeLineJoin Join { get; set; }
    [Parameter]
    public int StrokeDashArray { get; set; }

    [Parameter]
    public EventCallback<MouseEventArgs> OnClick { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnDoubleClick { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnMouseMove { get; set; }
    [Parameter]
    public EventCallback<WheelEventArgs> OnMouseWheel { get; set; }
    [Parameter]
    public EventCallback<DragEventArgs> OnDrag { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnMousePressed { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnMouseReleased { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnMouseOut { get; set; }
    [Parameter]
    public EventCallback<MouseEventArgs> OnMouseOver { get; set; }

}
